﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Tibet.Entidades;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using Tibet.Datos;


namespace Tibet.Datos
{

   
    /// <summary>
    /// Esta clase contendra cada uno de los metodos que tendran interaccion con la BD que tengan
    /// referencia o utilicen la Entidad CREDENCIAL
    /// </summary>   
    public class AccesoCredencial
    {
        #region Métodos

        public AccesoCredencial()
        {
            Conexion Conexion = new Conexion();
            
        }



        /// <summary>
        /// Inicializa un Objeto de tipo Conexion
        /// </summary>
        /// <returns>Objeto Conexion Inicializado</returns>
        private Conexion InstanciarConexion()
        {
            Conexion conexion = new Conexion();
            return (conexion);
        }

        /// <summary>
        /// Busca si el alias que recibe existe y de ser asi devuelve true
        /// </summary>
        /// <returns>Objeto Conexion Inicializado</returns>
        public bool ExisteAlias(String alias)
        {
            Conexion bd = InstanciarConexion();
            SqlCommand command = new SqlCommand();

            try
            {
                bd.AbrirConexionBd();
                command.Connection = bd.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                command.CommandText = "[dbo].[BuscarAlias1]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                command.CommandTimeout = 10;

                command.Parameters.AddWithValue("@Username", alias);
               
                SqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {

                    return true;
                }
                
                reader.Close();
                bd.CerrarConexionBd();
                return false;
            }

            catch (SqlException)
            {
                bd.CerrarConexionBd();
                return false;
            }

            catch (Exception) 
            {
                bd.CerrarConexionBd();
                return false;
            }
        


        
        }

        /// <summary>
        /// 
        /// </summary>
        /// <param name="usernameUsuario" name="claveUsuario"></param>
        /// <returns></returns>
        public bool BuscarLogin(String usernameUsuario,String claveUsuario)
        {
            Conexion bd = InstanciarConexion();
            SqlCommand command = new SqlCommand();

            try
            {
                bd.AbrirConexionBd();
                command.Connection = bd.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                command.CommandText = "[dbo].[SELCredencial]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                command.CommandTimeout = 10;

                command.Parameters.AddWithValue("@usernameUsuario", usernameUsuario);
                command.Parameters.AddWithValue("@claveUsuario", claveUsuario);
                SqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {

                    return true;
                }
                
                reader.Close();
                bd.CerrarConexionBd();
                return false;
            }

            catch (SqlException)
            {
                bd.CerrarConexionBd();
                return false;
            }

            catch (Exception) 
            {
                bd.CerrarConexionBd();
                return false;
            }
        }
        
        
        
        
        /// <summary>
        /// Inserta en usuario y en credencial los datos pasados para dar como resultado la cracion de un usuario
        /// </summary>
       
        public bool InsertarUsuarioEnBd(String nombre, String apellido, String mail, String alias, String clave)
        {
            Conexion bd = InstanciarConexion();
           
            SqlCommand command = new SqlCommand();
         

            try
            {
                bd.AbrirConexionBd();
                command.Connection = bd.ObjetoConexion();
                command.CommandType = System.Data.CommandType.StoredProcedure; //Tipo de comando que se va a ejecutar
                command.CommandText = "[dbo].[PruebaCrearUsuario]"; // Nombre del Procedimiento Almacenado en la Base de Datos
                command.CommandTimeout = 10;

                command.Parameters.AddWithValue("@Nombre", nombre);
                command.Parameters.AddWithValue("@Apellido", apellido);
                command.Parameters.AddWithValue("@Correo", mail);
                command.Parameters.AddWithValue("@Username", alias);
                command.Parameters.AddWithValue("@Clave", clave);
                

                SqlDataReader reader = command.ExecuteReader();

                if (reader.Read())
                {
                    return true;

                   
                }

                reader.Close();
                bd.CerrarConexionBd();

                
                return false;
            }

            catch (SqlException)
            {
                bd.CerrarConexionBd();

                return false;
            }

           



        }

        #endregion
    }
}
